﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using NCS.Module.LinhVucKinhDoanh.Library.Controler;
using NCS.Library.Utilities;
using NCS.Library;
using NCS.Module.LinhVucKinhDoanh.Library.LinhVucKD;
using CommonUtil;
using NCS.Library.Components.Security;

namespace NCS.Module.LinhVucKinhDoanh.Admin.UserControls
{
    public partial class DanhSach : AuthenticatedControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //add ckfinder
                CKNoiDung.Language = "vi";
                CKFinder.FileBrowser _FileBrowser = new CKFinder.FileBrowser();
                _FileBrowser.BasePath = "/ckfinder/";
                _FileBrowser.SetupCKEditor(CKNoiDung);

                FillFilter();
                FillIndex();
                FillParent();
            }
        }

        private void FillParent()
        {
            try
            {
                ddlCapCha.Items.Clear();
                LinhVucKDControler.LoadLinhVucKD(ddlCapCha.Items, int.Parse(AppEnv.PortalId()));
                ddlCapCha.Items.Insert(0, new ListItem("Root", "0"));
            }
            catch (Exception ex)
            {
                MessageBox.Show("Có lỗi " + ex.Message + " \n Liên hệ với quản trị hệ thống để được trợ giúp.");
            }
        }

        private void FillIndex()
        {
            try
            {
                ddlThuTu.Items.Clear();
                DataTable tbl = LinhVucKDControler.GetAllLinhVucKDFilter(Convert.ToInt32(ddlFilter.SelectedValue.ToString()));
                if (tbl != null && tbl.Rows.Count > 0)
                {
                    for (int i = 1; i <= tbl.Rows.Count + 1; i++)
                    {
                        ddlThuTu.Items.Add(new ListItem(i.ToString(), i.ToString()));
                    }
                }
                else
                {
                    ddlThuTu.Items.Add(new ListItem("1", "1"));
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Có lỗi " + ex.Message + " \n Liên hệ với quản trị hệ thống để được trợ giúp.");
            }
        }

        private void FillFilter()
        {
            try
            {
                ddlFilter.Items.Clear();
                //ddlFilter.Items.Add(new ListItem("---Tất cả---", "-1"));
                ddlFilter.Items.Add(new ListItem("Đã xuất bản", "1"));
                ddlFilter.Items.Add(new ListItem("Chưa xuất bản", "0"));
            }
            catch (Exception ex)
            {
                MessageBox.Show("Có lỗi " + ex.Message + " \n Liên hệ với quản trị hệ thống để được trợ giúp.");
            }
        }

        protected override void OnPreRender(EventArgs e)
        {
            Show_GridView();
        }

        private void Show_GridView()
        {
            try
            {
                DataTable tbl = null;
                try
                {
                    tbl = LinhVucKDControler.GetAllLinhVucKDFilter(Convert.ToInt32(ddlFilter.SelectedValue.ToString()));
                }
                catch
                { }
                if (tbl != null && tbl.Rows.Count > 0)
                {
                    grid.DataSource = tbl;
                    Style_Gridview(grid, Convert.ToInt32(tbl.Rows.Count.ToString()));
                    grid.DataBind();
                }
                else
                {
                    grid.DataSource = null;
                    grid.DataBind();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Có lỗi " + ex.Message + " \n Liên hệ với quản trị hệ thống để được trợ giúp.");
            }
        }

        protected void grid_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                DataRowView curData = (DataRowView)e.Row.DataItem;
                e.Row.Cells[1].Text = Convert.ToString(e.Row.DataItemIndex + 1);
                DropDownList dropIndex = (DropDownList)e.Row.FindControl("dropIndex");

                MiscUtility.FillIndex(dropIndex, 1, LinhVucKDControler.GetCount() + 1, Convert.ToInt32(curData["ThuTu"]));

                Literal ltrTrangThai = (Literal)e.Row.FindControl("ltrTrangThai");
                if (ltrTrangThai.Text.ToLower() == "false")
                {
                    ltrTrangThai.Text = CommonUtil.Constants.CMS_CHUAXUATBANDES;
                }
                else if (ltrTrangThai.Text.ToLower() == "true")
                {
                    ltrTrangThai.Text = CommonUtil.Constants.CMS_DAXUATBANDES;
                }

                Literal ltrID = (Literal)e.Row.FindControl("ltrID");
                Literal ltrTenLinhVuc = (Literal)e.Row.FindControl("ltrTenLinhVuc");
                ltrTenLinhVuc.Text = "<a href=\"" + AppEnv.AdminUrlParams("qt_ViewDetailLV") + "&contentid=" + ltrID.Text + " \">" + ltrTenLinhVuc.Text + "</a>";

                Literal ltrCapCha = (Literal)e.Row.FindControl("ltrCapCha");
                LinhVucKDInfo objLinhVucKD = LinhVucKDControler.GetInfo(int.Parse(ltrCapCha.Text));
                if (objLinhVucKD != null)
                {
                    ltrCapCha.Text = objLinhVucKD.TenLinhVuc;
                }
                else
                {
                    ltrCapCha.Text = "";
                }

                Button btnDel = (Button)e.Row.FindControl("btnDel");
                btnDel.Attributes.Add("onclick", MiscUtility.MSG_DELETE_CONFIRM);
            }
        }

        protected void grid_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "del")
            {
                try
                {

                    DataTable tableAllChild = LinhVucKDControler.GetAllChildByID(Convert.ToInt32(e.CommandArgument), AppEnv.GetLanguage());
                    if (tableAllChild != null && tableAllChild.Rows.Count > 1)
                    {
                        MessageBox.Show("Tồn tại con. Bạn phải xóa nút con trước");
                        return;
                    }
                    int iReturn = 0;
                    iReturn = LinhVucKDControler.DeleteLinhVucKD(Convert.ToInt32(e.CommandArgument));
                    if (iReturn != 0)
                    {
                        Show_GridView();
                        ClearForm();
                        MessageBox.Show(MiscUtility.MSG_UPDATE_SUCCESS);
                    }
                    else
                    {
                        MessageBox.Show(MiscUtility.MSG_UPDATE_ERROR);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Có lỗi " + ex.Message + " \n Liên hệ với quản trị hệ thống để được trợ giúp.");
                }
            }
            if (e.CommandName == "sort")
            {
                try
                {
                    foreach (GridViewRow row in grid.Rows)
                    {
                        DropDownList dropIndex = (DropDownList)row.FindControl("dropIndex");
                        Literal ltrID = (Literal)row.FindControl("ltrID");
                        int id = Convert.ToInt32(ltrID.Text);
                        //int id = Convert.ToInt32(row.Cells[0].Text);
                        LinhVucKDControler.SetIndex(id, Convert.ToInt32(dropIndex.SelectedValue));
                    }
                    MessageBox.Show(MiscUtility.MSG_UPDATE_SUCCESS);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Có lỗi " + ex.Message + " \n Liên hệ với quản trị hệ thống để được trợ giúp.");
                }

            }
            if (e.CommandName == "edit")
            {
                try
                {
                    LinhVucKDInfo objLinhVucKD = LinhVucKDControler.GetInfo(Convert.ToInt32(e.CommandArgument));
                    txtID.Text = objLinhVucKD.LinhVucID.ToString();
                    txtTenLinhVuc.Text = objLinhVucKD.TenLinhVuc;
                    ddlCapCha.SelectedValue = objLinhVucKD.CapChaID.ToString();
                    ddlThuTu.SelectedValue = objLinhVucKD.ThuTu.ToString();
                    CKNoiDung.Text = objLinhVucKD.NoiDung;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Có lỗi " + ex.Message + " \n Liên hệ với quản trị hệ thống để được trợ giúp.");
                }
            }
        }

        protected void btnAddNew_Click(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrEmpty(txtTenLinhVuc.Text.Trim()))
                {
                    MessageBox.Show("Phải nhập tên lĩnh vực.");
                    txtTenLinhVuc.Focus();
                    return;
                }
                if (string.IsNullOrEmpty(CKNoiDung.Text.Trim()))
                {
                    MessageBox.Show("Phải nhập nội dung.");
                    CKNoiDung.Focus();
                    return;
                }
                LinhVucKDInfo info = new LinhVucKDInfo();
                info.TenLinhVuc = txtTenLinhVuc.Text;
                info.CapChaID = int.Parse(ddlCapCha.SelectedValue);
                info.ThuTu = int.Parse(ddlThuTu.SelectedValue);
                info.Lang = AppEnv.GetLanguage();
                info.NoiDung = CKNoiDung.Text;
                info.TrangThai = bool.Parse("False");
                info.PortalID = ConvertUtility.ToInt32(AppEnv.PortalId()); ;
                info.CreateUserID = CurrentUser.UserID;
                int iReturn = 0;
                iReturn = LinhVucKDControler.CreateLinhVucKD(info);
                if (iReturn > 0)
                {
                    Show_GridView();
                    ClearForm();
                    //MessageBox.Show(MiscUtility.MSG_UPDATE_SUCCESS);
                }
                else
                {
                    MessageBox.Show(MiscUtility.MSG_UPDATE_ERROR);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Có lỗi " + ex.Message + " \n Liên hệ với quản trị hệ thống để được trợ giúp.");
            }
        }

        protected void btnUpdate_Click(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrEmpty(txtID.Text.Trim()))
                {
                    MessageBox.Show("Phải chọn bản ghi muốn sửa.");
                    return;
                }
                DataTable tableAllChild = LinhVucKDControler.GetAllChildByID(int.Parse(txtID.Text), AppEnv.GetLanguage());
                if (tableAllChild != null && tableAllChild.Rows.Count > 0)
                {
                    string strIDSelected = ddlCapCha.SelectedValue;
                    foreach (DataRow row in tableAllChild.Rows)
                    {
                        if (row["LinhVucID"].ToString() == strIDSelected)
                        {
                            MessageBox.Show("Chọn cấp cha không hợp lệ.\n Cấp cha phải khác bản ghi muốn sửa và các bản ghi là con của nó.");
                            return;
                        }
                    }
                }
                LinhVucKDInfo info = LinhVucKDControler.GetInfo(ConvertUtility.ToInt32(txtID.Text));
                info.TenLinhVuc = txtTenLinhVuc.Text;
                info.CapChaID = int.Parse(ddlCapCha.SelectedValue);
                info.ThuTu = int.Parse(ddlThuTu.SelectedValue);
                info.Lang = AppEnv.GetLanguage();
                info.NoiDung = CKNoiDung.Text;
                info.PortalID = ConvertUtility.ToInt32(AppEnv.PortalId()); ;
                info.ModifyUserID = CurrentUser.UserID;
                int iReturn = 0;
                iReturn = LinhVucKDControler.UpdateLinhVucKD(info);
                if (iReturn > 0)
                {
                    Show_GridView();
                    ClearForm();
                    //MessageBox.Show(MiscUtility.MSG_UPDATE_SUCCESS);
                }
                else
                {
                    MessageBox.Show(MiscUtility.MSG_UPDATE_ERROR);
                }
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }

        protected void grid_OnPageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            grid.PageIndex = e.NewPageIndex;
            Show_GridView();
        }

        private void Style_Gridview(GridView grv, int _TotalRecord)
        {
            grid.PagerSettings.Position = PagerPosition.Bottom; // vi tri duoi
            grid.PagerSettings.PageButtonCount = 10; // hien thi 2 so
            int iRecord = 7;
            grid.PageSize = 20;

            if (_TotalRecord > iRecord * 2)
            {
                grid.AllowPaging = true;
            }
            else
            {
                grid.AllowPaging = false;
            }
        }

        protected void ddlFilter_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (grid != null && grid.Rows.Count > 0)
                {
                    grid.DataSource = null;
                    grid.DataBind();
                }
                DataTable tbl = null;
                try
                {
                    tbl = LinhVucKDControler.GetAllLinhVucKDFilter(Convert.ToInt32(ddlFilter.SelectedValue.ToString()));
                }
                catch
                { }
                if (tbl != null && tbl.Rows.Count > 0)
                {
                    grid.DataSource = tbl;
                    Style_Gridview(grid, Convert.ToInt32(tbl.Rows.Count.ToString()));
                    grid.DataBind();
                }
                ClearForm();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Có lỗi " + ex.Message + " \n Liên hệ với quản trị hệ thống để được trợ giúp.");
            }
        }

        private void ClearForm()
        {
            try
            {
                txtID.Text = "";
                txtTenLinhVuc.Text = "";
                FillParent();
                FillIndex();
                CKNoiDung.Text = "";
            }
            catch (Exception ex)
            {
                MessageBox.Show("Có lỗi " + ex.Message + " \n Liên hệ với quản trị hệ thống để được trợ giúp.");
            }
        }
    }
}